function getLabels(scale) {
	return scale.ticks.map(t => t.label);
}

describe('Test tick generators', function() {
	// formatters are used as default config values so users want to be able to reference them
	it('Should expose formatters api', function() {
		expect(typeof Chart.Ticks).toBeDefined();
		expect(typeof Chart.Ticks.formatters).toBeDefined();
		expect(typeof Chart.Ticks.formatters.values).toBe('function');
		expect(typeof Chart.Ticks.formatters.numeric).toBe('function');
	});

	it('Should generate linear spaced ticks with correct precision', function() {
		var chart = window.acquireChart({
			type: 'line',
			data: {
				datasets: [{
					data: []
				}],
			},
			options: {
				plugins: {
					legend: false
				},
				scales: {
					x: {
						type: 'linear',
						position: 'bottom',
						ticks: {
							callback: function(value) {
								return value.toString();
							}
						}
					},
					y: {
						type: 'linear',
						ticks: {
							callback: function(value) {
								return value.toString();
							}
						}
					}
				}
			}
		});

		var xLabels = getLabels(chart.scales.x);
		var yLabels = getLabels(chart.scales.y);

		expect(xLabels).toEqual(['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']);
		expect(yLabels).toEqual(['0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']);
	});

	it('Should generate logarithmic spaced ticks with correct precision', function() {
		var chart = window.acquireChart({
			type: 'line',
			data: {
				datasets: [{
					data: []
				}],
			},
			options: {
				plugins: {
					legend: false
				},
				scales: {
					x: {
						type: 'logarithmic',
						position: 'bottom',
						min: 0.1,
						max: 1,
						ticks: {
							callback: function(value) {
								return value.toString();
							}
						}
					},
					y: {
						type: 'logarithmic',
						min: 0.1,
						max: 1,
						ticks: {
							callback: function(value) {
								return value.toString();
							}
						}
					}
				}
			}
		});

		var xLabels = getLabels(chart.scales.x);
		var yLabels = getLabels(chart.scales.y);

		expect(xLabels).toEqual(['0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']);
		expect(yLabels).toEqual(['0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1']);
	});
});
